using System;
namespace Microsoft.Data.Edm.Expressions
{
	/// <summary>
	/// Defines EDM expression kinds.
	/// </summary>
	public enum EdmExpressionKind
	{
		/// <summary>
		/// Represents an expression with unknown or error kind.
		/// </summary>
		None,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmBinaryConstantExpression" />.
		/// </summary>
		BinaryConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmBooleanConstantExpression" />.
		/// </summary>
		BooleanConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmDateTimeConstantExpression" />.
		/// </summary>
		DateTimeConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmDateTimeOffsetConstantExpression" />.
		/// </summary>
		DateTimeOffsetConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmDecimalConstantExpression" />.
		/// </summary>
		DecimalConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmFloatingConstantExpression" />.
		/// </summary>
		FloatingConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmGuidConstantExpression" />.
		/// </summary>
		GuidConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmIntegerConstantExpression" />.
		/// </summary>
		IntegerConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmStringConstantExpression" />.
		/// </summary>
		StringConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmTimeConstantExpression" />.
		/// </summary>
		TimeConstant,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmNullExpression" />.
		/// </summary>
		Null,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmRecordExpression" />.
		/// </summary>
		Record,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmCollectionExpression" />.
		/// </summary>
		Collection,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmPathExpression" />.
		/// </summary>
		Path,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmParameterReferenceExpression" />.
		/// </summary>
		ParameterReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmFunctionReferenceExpression" />.
		/// </summary>
		FunctionReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmPropertyReferenceExpression" />.
		/// </summary>
		PropertyReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmValueTermReferenceExpression" />.
		/// </summary>
		ValueTermReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmEntitySetReferenceExpression" />.
		/// </summary>
		EntitySetReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmEnumMemberReferenceExpression" />.
		/// </summary>
		EnumMemberReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmIfExpression" />.
		/// </summary>
		If,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmAssertTypeExpression" />.
		/// </summary>
		AssertType,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmIsTypeExpression" />.
		/// </summary>
		IsType,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmApplyExpression" />.
		/// </summary>
		FunctionApplication,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmLabeledExpressionReferenceExpression" />.
		/// </summary>
		LabeledExpressionReference,
		/// <summary>
		/// Represents an expression implementing <see cref="T:Microsoft.Data.Edm.Expressions.IEdmLabeledExpression" />
		/// </summary>
		Labeled
	}
}